import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'

Vue.use(Vuex)

//  require.context:  可以导入指定目录下的所有配置文件
// 语法  - require.context('指定的目录',设置是否递归获取,正则规则匹配指定文件)
const req = require.context('./modules', false, /\.js$/)

// log获得   ['./app.js', './settings.js', './user.js']
// console.log(' req.keys()', req.keys())

// 1. 导入第三方包  做数据持久化
//    需要先下载第三方包名    vuex-persistedstate
// import createPersistedState from 'vuex-persistedstate'

//  log获得    [Module, Module, Module]
// console.log(' req.keys().map(req)', req.keys().map(req))

// log获得  {namespaced: true, state: {…}, mutations: {…}, actions: {…}}
// console.log('Module.fault', req.keys().map(req)[0].default)

// 进行 遍历+切割  最后在取值
const mName = req.keys().map(item => { return item.split('./')[1] }).map(item => { return item.split('.js')[0] })
const mModule = req.keys().map(req)

const obj = {}

mName.forEach((key, index) => {
  // 获得  app  settings   user
  // console.log('key',key);
  // 对应的下标
  // 获得 console.log('index',index);
  // 给对象添加属性名     给对象添加属性值
  obj[key] = mModule[index].default
})

// console.log('obj', obj)

const store = new Vuex.Store({
  // 调用第三方包 完成  vuex的数据持久化,保存到本地存储
  // plugins: [createPersistedState()],
  modules: obj,
  getters
})

export default store
